package mapReader;


import information.Kaart;

import java.util.ArrayList;
import java.util.List;


import util.Coordinaat;

import util.Richting;
import util.WindRichting;


public class Speler {

	private Kaart kaart;	
	private String naam;
	private Coordinaat positie;
	private WindRichting orientatie;
	private Coordinaat oorsprong;
	private WindRichting beginOrientatie;

	public Speler(String naam){
		setNaam(naam);
		setKaart(new Kaart());
		setPositie(new Coordinaat(0, 0));
		setOrientatie(WindRichting.NOORD);
		setBeginOrientatie(null);
		setOorsprong(null);
	}
	
	public String getNaam() {
		return this.naam;
	}
	
	private void setNaam(String naam) {
		this.naam = naam;
	}
	
	
	public Kaart getKaart(){
		return kaart;
	}
	
	private void setKaart(Kaart k){
		this.kaart = k;
	}
	
	
	
	public Coordinaat getPositie()
	{
		return positie;
	}
	
	public void setPositie(Coordinaat coordinaat){
		this.positie = coordinaat;
	}
	
	public WindRichting getOrientatie(){
		return orientatie;
	}

	public void setOrientatie(WindRichting windrichting){
		this.orientatie = windrichting;
	}
	
	public Coordinaat getOorsprong(){
		return oorsprong;
	}

	public void setOorsprong(Coordinaat coordinaat){
		this.oorsprong = coordinaat;
	}
	
	public WindRichting getBeginOrientatie(){
		return beginOrientatie;
	}
	
	public void setBeginOrientatie(WindRichting windrichting){
		this.beginOrientatie = windrichting;
	}
	
	
	public void setMuur(Richting richting, boolean muur) {
		WindRichting w = getOrientatie().getOrientatieInRichting(richting);
		setMuur(w, getPositie(), muur);
	}
	
	public void setMuur(WindRichting richting, Coordinaat positie, boolean muur)
	{
		getKaart().getVakjeOp(positie).getVakGrens(richting).setMuur(muur);
	}
	
	
	

	public void setLaatsteLocatiePacMan(Coordinaat pacman) {
		getKaart().setLaatsteLocatiePacMan(pacman);
	}
	
	public boolean heeftGekendeBeginPositieEnOrientatie(){
		 return getBeginOrientatie() != null && getOorsprong() != null;
	}
	
	
	
	public void vooruit() {
		setPositie(getPositie().plus(getOrientatie().getVector()));
	}
	
	public void draai(Richting richting){
		setOrientatie(getOrientatie().getOrientatieInRichting(richting));
	}

	@Override
	public String toString(){
		String string = getNaam() + " " + "P:" + getPositie().toString();
		if(heeftGekendeBeginPositieEnOrientatie())
			string += "O:" + getOorsprong().toString() + getBeginOrientatie().toString();
		
		return string;
	}
}
